using System;
using System.Collections.Generic;


namespace Gfw.Models.Account
{
	[Serializable]
	public partial class ActCompanyStatisticsprofit: IEquatable<ActCompanyStatisticsprofit>
	{

		#region Private Members

		private string _id; 
		private decimal _annualfee; 
		private decimal _sellstock; 
		private decimal _tocashtax; 
		private decimal _tax;
        private decimal _changeinformation;
		private decimal _total; 
		private DateTime _settlementdate; 
		private decimal _bonus; 
		private decimal _others; 
		private decimal _balance; 
		private string _abstract; 		
		#endregion

		#region Constructor

		public ActCompanyStatisticsprofit()
		{
			_id = String.Empty; 
			_annualfee = 0; 
			_sellstock = 0; 
			_tocashtax = 0; 
			_tax = 0;
            _changeinformation = 0;
			_total = 0; 
			_settlementdate = DateTime.MinValue; 
			_bonus = 0; 
			_others = 0; 
			_balance = 0; 
			_abstract = String.Empty; 
		}
		#endregion // End of Default ( Empty ) Class Constuctor

		#region Public Properties
			
		public virtual string Id
		{
			get
			{ 
				return _id;
			}

			set	
			{	
				if( value == null )
					throw new ArgumentOutOfRangeException("Null value not allowed for Id", value, "null");
				
				if(  value.Length > 40)
					throw new ArgumentOutOfRangeException("Invalid value for Id", value, value.ToString());
				
				_id = value;
			}
		}
			
		public virtual decimal AnnualFee
		{
			get
			{ 
				return _annualfee;
			}
			set
			{
				_annualfee = value;
			}

		}
			
		public virtual decimal SellStock
		{
			get
			{ 
				return _sellstock;
			}
			set
			{
				_sellstock = value;
			}

		}
			
		public virtual decimal ToCashTax
		{
			get
			{ 
				return _tocashtax;
			}
			set
			{
				_tocashtax = value;
			}

		}
			
		public virtual decimal Tax
		{
			get
			{ 
				return _tax;
			}
			set
			{
				_tax = value;
			}

		}

        public virtual decimal ChangeInformation
        {
            get
            {
                return _changeinformation;
            }
            set
            {
                _changeinformation = value;
            }

        }
			
		public virtual decimal Total
		{
			get
			{ 
				return _total;
			}
			set
			{
				_total = value;
			}

		}
			
		public virtual DateTime SettlementDate
		{
			get
			{ 
				return _settlementdate;
			}
			set
			{
				_settlementdate = value;
			}

		}
			
		public virtual decimal Bonus
		{
			get
			{ 
				return _bonus;
			}
			set
			{
				_bonus = value;
			}

		}
			
		public virtual decimal Others
		{
			get
			{ 
				return _others;
			}
			set
			{
				_others = value;
			}

		}
			
		public virtual decimal Balance
		{
			get
			{ 
				return _balance;
			}
			set
			{
				_balance = value;
			}

		}
			
		public virtual string Abstract
		{
			get
			{ 
				return _abstract;
			}

			set	
			{	
				if(  value != null &&  value.Length > 256)
					throw new ArgumentOutOfRangeException("Invalid value for Abstract", value, value.ToString());
				
				_abstract = value;
			}
		}
			
				
		#endregion 

		#region Public Functions

		#endregion //Public Functions

		#region IEquatable members

        public virtual bool Equals(ActCompanyStatisticsprofit other)
		{
			if (other == this)
				return true;
		
			return ( other != null ) &&
				( this._id == other.Id );
				   
		}

		#endregion
		
	}
}
